/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.notaria.guerrasalas.be;

import gob.satt.comun.util.Util;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Administrador
 */
@Entity
@Table(name = "DERECHO_PROPIEDAD", catalog = "BASE_NOTARIAL", schema = "dbo")
@NamedQueries({
    @NamedQuery(name = "DerechoPropiedad.findAll", query = "SELECT d FROM DerechoPropiedad d"),
    @NamedQuery(name = "DerechoPropiedad.findByIdDerechoPropiedad", query = "SELECT d FROM DerechoPropiedad d WHERE d.idDerechoPropiedad = :idDerechoPropiedad"),
    @NamedQuery(name = "DerechoPropiedad.findByNroTarjetaPropiedad", query = "SELECT d FROM DerechoPropiedad d WHERE d.nroTarjetaPropiedad = :nroTarjetaPropiedad"),
    @NamedQuery(name = "DerechoPropiedad.findByOficinaRegistral", query = "SELECT d FROM DerechoPropiedad d WHERE d.oficinaRegistral = :oficinaRegistral")
})
public class DerechoPropiedad implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "ID_DERECHO_PROPIEDAD", nullable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long idDerechoPropiedad;
    @Column(name = "NRO_TARJETA_PROPIEDAD", length = 20)
    private String nroTarjetaPropiedad;
    @Column(name = "OFICINA_REGISTRAL", length = 50)
    private String oficinaRegistral;
    @Column(name = "FECHA_PROPIEDAD")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaPropiedad;
    @OneToOne(mappedBy = "derechoPropiedad", fetch = FetchType.LAZY)
    private Vehiculo vehiculo;

    @PreUpdate
    @PrePersist
    private void validarFormato() {
        setNroTarjetaPropiedad(nroTarjetaPropiedad != null ? nroTarjetaPropiedad.toUpperCase() : null);
        setOficinaRegistral(oficinaRegistral != null ? oficinaRegistral.toUpperCase() : null);
    }

    public DerechoPropiedad() {
    }

    public DerechoPropiedad(Long idDerechoPropiedad) {
        this.idDerechoPropiedad = idDerechoPropiedad;
    }

    public Long getIdDerechoPropiedad() {
        return idDerechoPropiedad;
    }

    public void setIdDerechoPropiedad(Long idDerechoPropiedad) {
        this.idDerechoPropiedad = idDerechoPropiedad;
    }

    public String getNroTarjetaPropiedad() {
        return nroTarjetaPropiedad;
    }

    public void setNroTarjetaPropiedad(String nroTarjetaPropiedad) {
        this.nroTarjetaPropiedad = nroTarjetaPropiedad;
    }

    public String getOficinaRegistral() {
        return oficinaRegistral;
    }

    public void setOficinaRegistral(String oficinaRegistral) {
        this.oficinaRegistral = oficinaRegistral;
    }

    public Date getFechaPropiedad() {
        return fechaPropiedad;
    }

    public void setFechaPropiedad(Date fechaPropiedad) {
        this.fechaPropiedad = fechaPropiedad;
    }

    public String getFechaPropiedadAsString() {
        return (fechaPropiedad == null ? "No se ha especificado." : Util.getFecha(fechaPropiedad));
    }

    public Vehiculo getVehiculo() {
        return vehiculo;
    }

    public void setVehiculo(Vehiculo vehiculo) {
        this.vehiculo = vehiculo;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final DerechoPropiedad other = (DerechoPropiedad) obj;
        if (this.idDerechoPropiedad != other.idDerechoPropiedad && (this.idDerechoPropiedad == null || !this.idDerechoPropiedad.equals(other.idDerechoPropiedad))) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 29 * hash + (this.idDerechoPropiedad != null ? this.idDerechoPropiedad.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return idDerechoPropiedad.toString();
    }
}
